#include <bits/stdc++.h>
// 2025/02/07
// tag: 
// Author: Zhang Muen
using namespace std;

using int64 = int64_t;

struct {
    int s, t, d;
} t[201];

int N, M, x, y, K, ans[201][201][201];
char g[201][201];
int dx[4] = {-1, 1, 0, 0}, dy[4] = {0, 0, -1, 1};

int dfs(int x, int y, int k){
    if (k == K + 1)
        return 0;
    if (ans[x][y][k] != 0x3f3f3f3f)
        return ans[x][y][k];
    int a = dfs(x, y, k + 1);
    for (int i = t[k].s + 1; i <= t[k].t + 1; i++) {
        int nx = x + dx[t[k].d] * (i - t[k].s), ny = y + dy[t[k].d] * (i - t[k].s);
        if (nx < 1 || nx > N || ny < 1 || ny > M || g[nx][ny] == 'x')
            break;
        a = max(a, dfs(nx, ny, k + 1) + i - t[k].s);
    }
    return ans[x][y][k] = a;
}

signed main()
{
    cin >> N >> M >> x >> y >> K;
    for (int i = 1; i <= N; i++)
        for (int j = 1; j <= M; j++)
            cin >> g[i][j];
    memset(ans, 0x3f, sizeof(ans));
    for (int i = 1; i <= K; i++)
        cin >> t[i].s >> t[i].t >> t[i].d, t[i].d--;
    cout << dfs(x, y, 1);
    return 0;
}